home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / nihcl-30.lha / nihcl-3.0 / lib / Bitset.h < prev    next >
C/C++ Source or Header  |  1990-05-19  |  3KB  |  85 lines

  1. #ifndef    BITSET_H
  2. #define    BITSET_H
  3.  
  4. /*$Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/lib/RCS/Bitset.h,v 3.0 90/05/20 00:19:14 kgorlen Rel $*/
  5.  
  6. /* BitSet.h -- declarations for set of small integers
  7.  
  8.     THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
  9.     "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE
  10.     AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT
  11.     CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE
  12.     PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
  13.     RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
  14.  
  15. Author:
  16.     K. E. Gorlen
  17.     Computer Systems Laboratory, DCRT
  18.     National Institutes of Health
  19.     Bethesda, MD 20892
  20.  
  21. $Log:    Bitset.h,v $
  22.  * Revision 3.0  90/05/20  00:19:14  kgorlen
  23.  * Release for 1st edition.
  24.  * 
  25. */
  26.  
  27. #include "Object.h"
  28.  
  29. class Bitset: public VIRTUAL Object {
  30.     DECLARE_MEMBERS(Bitset);
  31. public:
  32.     static unsigned bit(unsigned i)    { return 1<<i; }
  33. protected:
  34.     unsigned m;
  35.     Bitset(unsigned i, char* dum)    { (dum, m = i); }
  36. protected:        // storer() functions for object I/O
  37.     virtual void storer(OIOofd&) const;
  38.     virtual void storer(OIOout&) const;
  39. public:
  40.     Bitset()        { m = 0; }
  41.     Bitset(int i1)        { m = bit(i1); }
  42.     Bitset(int i1, int i2)
  43.         { m = bit(i1)|bit(i2); }
  44.     Bitset(int i1, int i2, int i3)
  45.         { m = bit(i1)|bit(i2)|bit(i3); }
  46.     Bitset(int i1, int i2, int i3, int i4)
  47.         { m = bit(i1)|bit(i2)|bit(i3)|bit(i4); }
  48.     Bitset(int i1, int i2, int i3, int i4, int i5)
  49.         { m = bit(i1)|bit(i2)|bit(i3)|bit(i4)|bit(i5); }
  50.     Bitset(int i1, int i2, int i3, int i4, int i5, int i6)
  51.         { m = bit(i1)|bit(i2)|bit(i3)|bit(i4)|bit(i5)|bit(i6); }
  52.     Bitset(int i1, int i2, int i3, int i4, int i5, int i6, int i7)
  53.         { m = bit(i1)|bit(i2)|bit(i3)|bit(i4)|bit(i5)|bit(i6)|bit(i7); }
  54.     Bitset operator~() const        { return Bitset(~m, ""); }
  55.     Bitset operator-(const Bitset& n) const    { return Bitset(m & ~n.m, ""); }
  56.     bool operator>(const Bitset& n) const    { return m == (m|n.m) && m != n.m; }
  57.     bool operator<(const Bitset& n) const    { return n.m == (m|n.m) && m != n.m; }
  58.     bool operator>=(const Bitset& n) const    { return m == (m|n.m); }
  59.     bool operator<=(const Bitset& n) const    { return n.m == (m|n.m); }
  60.     bool operator==(const Bitset& n) const    { return m == n.m; }
  61.     bool operator!=(const Bitset& n) const    { return m != n.m; }
  62.     Bitset operator&(const Bitset& n) const    { return Bitset(m & n.m, ""); }
  63.     Bitset operator^(const Bitset& n) const { return Bitset(m ^ n.m, ""); }
  64.     Bitset operator|(const Bitset& n) const    { return Bitset(m | n.m, ""); }
  65.     void operator=(const Bitset& n)        { m = n.m; }
  66.      void operator-=(const Bitset& n)    { m &= ~n.m; }
  67.     void operator&=(const Bitset& n)    { m &= n.m; }
  68.     void operator^=(const Bitset& n)    { m ^= n.m; }
  69.     void operator|=(const Bitset& n)    { m |= n.m; }
  70.     unsigned asMask() const        { return m; }
  71.     bool includes(unsigned i) const    { return (m & bit(i)) != 0; }
  72.     virtual unsigned capacity() const;
  73.     virtual void deepenShallowCopy();    // {}
  74.     virtual unsigned hash() const;
  75.     virtual bool isEmpty() const;
  76.     virtual bool isEqual(const Object&) const;
  77.     virtual void printOn(ostream& strm =cout) const;
  78.     virtual unsigned size() const;
  79.     virtual const Class* species() const;
  80. private:                // shouldNotImplement()
  81.     virtual int compare(const Object&) const;
  82. };
  83.  
  84. #endif
  85.